Skip to content

feat: add official GitHub Action for CI/CD translation automation - #2

Merged
Peyton-Spencer merged 2 commits into
mainfrom
feat/github-action
May 3, 2026
Merged

feat: add official GitHub Action for CI/CD translation automation#2
Peyton-Spencer merged 2 commits into
mainfrom
feat/github-action

Conversation

@Peyton-Spencer

Copy link
Copy Markdown
Contributor

Summary

  • Adds action.yml — a composite GitHub Action (omniaura/solid-translate@v1) that installs, extracts, and translates with any package manager, optionally auto-committing results
  • Exposes changed and files outputs for downstream workflow steps
  • Documents the action with inputs/outputs tables and usage examples in the README
  • Adds GitHub Action to the features list and gt-react comparison table

Test plan

  • Verify action.yml syntax is valid via GitHub Actions linter
  • Test action in a sample repo with command: extract
  • Test action in a sample repo with command: both and an API key
  • Test commit: true flow commits and pushes translation files
  • Verify outputs (changed, files) propagate to subsequent steps

🤖 Generated with Claude Code

@Peyton-Spencer Peyton-Spencer left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found a few blocking issues in the composite action behavior that should be fixed before merging.

  1. The install step mutates the consumer repository. npm install -D solid-translate, bun add -d solid-translate, pnpm add -D solid-translate, and yarn add -D solid-translate all update package manifests and lockfiles. The later change detector treats any changed JSON file as translation output, so a first run can report changed=true just because package.json changed, and commit: true can commit dependency installation changes back to the user's repo. An action should avoid persistent dependency mutation, for example by running the packaged CLI via the action checkout or by using a non-mutating package execution path.

  2. The change detection/output scope is too broad and too narrow at the same time. It flags every changed JSON file, including package.json, unrelated config, or app data, but misses .solid-translate.lock when it is the only changed file and misses the Markdown/MDX paths that the README says the CLI supports. That makes changed and files unreliable and can skip commits that should happen.

  3. User-controlled inputs are interpolated directly into shell scripts. In particular commit-message is expanded inside git commit -m "...", and package-manager is expanded inside the shell case. GitHub evaluates those expressions before bash runs, so quotes or command substitutions in inputs can alter the script. Please pass inputs through environment variables and quote the shell variables, and validate enum-like inputs explicitly.

  4. The README example combines pull_request, contents: write, and commit: true, but the action commits and runs plain git push. With actions/checkout defaults on PR events this is often a detached merge ref or read-only token path, especially for forks, so the documented workflow is likely to fail or behave inconsistently. The docs should either show a push-only auto-commit flow or a PR-safe pattern with an explicit checkout ref/PR creation step.

CI is green, and the committed bun.lock looks consistent with the current Bun-based CI. These action-level issues are enough that I would not merge this version yet.

Peyton-Spencer and others added 2 commits May 3, 2026 18:15
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex <noreply@openai.com>
@Peyton-Spencer
Peyton-Spencer merged commit 040e6d4 into main May 3, 2026
1 check passed
@Peyton-Spencer
Peyton-Spencer deleted the feat/github-action branch May 3, 2026 22:19
github-actions Bot pushed a commit that referenced this pull request May 3, 2026
# [1.1.0](v1.0.0...v1.1.0) (2026-05-03)

### Features

* add official GitHub Action for CI/CD translation automation ([#2](#2)) ([040e6d4](040e6d4))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant